#include "link.h"

// 创建链表节点的函数--使用地址传参实现  返回值方式也能实现 很简单课下自己写
int create_node(node_t **p, int num){
    if(NULL == p){
        printf("入参为NULL 请检查\n");
        return -1;
    }
    *p = (node_t *)malloc(sizeof(node_t));
    if(NULL == *p){
        printf("内存分配失败\n");
        return -1;
    }
    (*p)->data = num;
    (*p)->next = NULL;
    return 0;
}

// 向链表中插入元素(头插)
int insert_list_by_head(node_t *phead, int num){
    if(NULL == phead){
        printf("入参为NULL 请检查\n");
        return -1;
    }
    // 创建新节点
    node_t *pnew = NULL;
    create_node(&pnew, num);
    // 执行头插
    pnew->next = phead->next;
    phead->next = pnew;
    return 0;
}
    int print_list(node_t *phead){
    if(NULL == phead){
        printf("入参为NULL 请检查\n");
        return -1;
    }
    node_t *ptemp = phead->next; 
    while(NULL != ptemp){
        printf("%d  ", ptemp->data);
        ptemp = ptemp->next; // 这行代码的作用在链表操作中真重要 类似于顺序表下标 i++
    }
    printf("\n");
    return 0;
}

